<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <!-- <script>
        //字符串中有没有连着的三个数字
        // var reg = /123/g; // 满足不了需求，需要用到表达式
        var reg = /[0123456789][0123456789][0123456789]/g; //一个方括号代表一位，就是一个表达式
        //方括号里的数字表示可以取到的范围 0 - 9, 不能随便加空格
        var str = "1234234348djfhjsd7883hduifdhdui";
        // 匹配完123之后，不会重叠匹配，下一位是423
        console.log(str.match(reg));


        var reg1 = /[ab][cd][d]/g; // 每个字母都是取值区间的一个
        // var reg1 = /[0-9a-z][cd][d]/g; //可以使用简写
        var reg1 = /[^ab][cd][d]/g;
        // ^ 放到表达式里面代表非，也就是除了ab的其他的任何字符，对表达式取补集

        var str1 = "abcd";
        console.log(str1.match(reg1)); // 返回null

        var reg2 = /(abc|bcd)[a-z]/g;
        //(abc|bcd) 匹配字符串abc 或者 bcd， abc为一个整体字符串
        // 查找任何指定的选项
        var str2 = "abccbcdcd";
        console.log(str2.match(reg2));

    </script> -->

    <script>
        // 元字符，是拥有特殊含义的字符

        // \w === [0-9A-z_]  //本质上就是表达式
        // \W === [^\w]   //非的\w
        // \d === [0-9] 
        // \D === [^\d]  
        var reg = /\wc/g;
        var str = "bcd2";
        console.log(str.match(reg));

        var reg1 = /[\w\d]/g; // 表达式里面也可以写元字符，范围变广
        var str1 = "sutyut";
        console.log(str1.match(reg1));

        // \s === [\t\n\r\v\f ] // 表达式里面可以加空格，代表空格字符
        // \S === [^\s]

        // \n	查找换行符
        // \r	查找回车符
        // \t	查找制表符

        var reg3 = /\t\nc/g;
        var str3 = "abc\t\ncdefgh"; //制表符相当于四个空格，但是只有写\t才能被查找得到
//         var str3 = `abc\t
// cdefgh`;   // 这样也可以,制表符和四个空格是不一样的，制表符是一个字符，\n 和多行字符串的回车是一样的
        var strobj = new String(str3);
        console.log(str3.match(reg3));



        // \b === 单词边界
        // \B === 非单词边界
        // . === [^\r\n]   点也代表一个字符
 
        var reg2 = /\bcde\b/g;
        //表示cde是一个单词，两边是边界，\b只是指出边界，并不是字符内容
        var str2 = "abc cde egh";
        console.log(str2.match(reg2)); // 返回cde
        console.log(str2.match(/\bcde\B/g)); // 返回null


        // \u010000 - \u01ffff unicode编码有16层，我们一般用的是第一层，第一层可以只写四位
        // \u020000 - \u02ffff
        //     ·
        //     ·
        //     ·
        // \u100000 - \u10ffff

        var reg4 = /\u5f20\u656c\u6d9b\u6709\u6ca1\u6709\u620f/g;
        // 查找以16进制编码规定的字符
        var reg4 = /[\u5f20\u656c\u6d9b\u6709\u6ca1\u6709\u620f]/g;
        // var reg4 = /[\u3000-\ua000]/g;
        // 表达式里面也可以写unicode码

        var str4 = "大家拉萨第三节课领导好张敬涛有没有戏市恐龙当家阿克苏大家好";
        console.log(str4.match(reg4));


        var reg = /[\d\D]/g;
        // 代表所有字符

        
    </script>

</body>
</html>